Visual lab

Feature · headless

Headless

The Project API and SDK: the same collections and forms behind the Canvas site, served as JSON to any front end.

shipped 3 variants On the board →
v1

Edit once, everywhere

loop runs on screen

A clinic closing time is changed on the entry and the change travels the API to the Canvas site, the iOS app and the front-desk screen in turn. Alternates, so the edit is undone the same way.

views/components/visuals/headless/v1.html

Static · three placements

Bento card · 320px Static
Headless — Project API Fig. 17

Collections · Locations

Location

Ponsonby Clinic

Closes

6:00 pm5:00 pm

Saved

Website · Canvas

Ponsonby Clinic 6:00 pm5:00 pm

iOS app · SDK

Ponsonby Clinic 6:00 pm5:00 pm

Front desk · Kiosk

Ponsonby Clinic 6:00 pm5:00 pm
/api/collections/locations 3 fronts
Feature row · 560px Static
Headless — Project API Fig. 17

Collections · Locations

Location

Ponsonby Clinic

Closes

6:00 pm5:00 pm

Saved

Website · Canvas

Ponsonby Clinic 6:00 pm5:00 pm

iOS app · SDK

Ponsonby Clinic 6:00 pm5:00 pm

Front desk · Kiosk

Ponsonby Clinic 6:00 pm5:00 pm
/api/collections/locations 3 fronts
Hero figure · 880px Static
Headless — Project API Fig. 17

Collections · Locations

Location

Ponsonby Clinic

Closes

6:00 pm5:00 pm

Saved

Website · Canvas

Ponsonby Clinic 6:00 pm5:00 pm

iOS app · SDK

Ponsonby Clinic 6:00 pm5:00 pm

Front desk · Kiosk

Ponsonby Clinic 6:00 pm5:00 pm
/api/collections/locations 3 fronts

Animated · loop

Feature row · 560px
Headless — Project API Fig. 17

Collections · Locations

Location

Ponsonby Clinic

Closes

6:00 pm5:00 pm

Saved

Website · Canvas

Ponsonby Clinic 6:00 pm5:00 pm

iOS app · SDK

Ponsonby Clinic 6:00 pm5:00 pm

Front desk · Kiosk

Ponsonby Clinic 6:00 pm5:00 pm
/api/collections/locations 3 fronts
v2

Request, response

once one pass, holds

A curl against the Project API with a publishable key, and the JSON that comes back revealed line by line. The plainest possible statement of headless.

views/components/visuals/headless/v2.html

Static · three placements

Bento card · 320px Static
Headless — GET /api/collections Fig. 18

$ curl https://northwind.blutui.com \

/api/collections/team/entries \

-H "Authorization: \

Bearer bt_publishable_…"▏

{

"object": "list",

"data": [

{ "name": "Ada Okafor", "role": "Engineer" },

{ "name": "Sam Reid", "role": "Producer" },

{ "name": "June Park", "role": "Strategist" }

],

"meta": { "total": 4 }

}

Project API · publishable key 200 OK · 41msSending…
Feature row · 560px Static
Headless — GET /api/collections Fig. 18

$ curl https://northwind.blutui.com \

/api/collections/team/entries \

-H "Authorization: \

Bearer bt_publishable_…"▏

{

"object": "list",

"data": [

{ "name": "Ada Okafor", "role": "Engineer" },

{ "name": "Sam Reid", "role": "Producer" },

{ "name": "June Park", "role": "Strategist" }

],

"meta": { "total": 4 }

}

Project API · publishable key 200 OK · 41msSending…
Hero figure · 880px Static
Headless — GET /api/collections Fig. 18

$ curl https://northwind.blutui.com \

/api/collections/team/entries \

-H "Authorization: \

Bearer bt_publishable_…"▏

{

"object": "list",

"data": [

{ "name": "Ada Okafor", "role": "Engineer" },

{ "name": "Sam Reid", "role": "Producer" },

{ "name": "June Park", "role": "Strategist" }

],

"meta": { "total": 4 }

}

Project API · publishable key 200 OK · 41msSending…

Animated · once

Feature row · 560px
Headless — GET /api/collections Fig. 18

$ curl https://northwind.blutui.com \

/api/collections/team/entries \

-H "Authorization: \

Bearer bt_publishable_…"▏

{

"object": "list",

"data": [

{ "name": "Ada Okafor", "role": "Engineer" },

{ "name": "Sam Reid", "role": "Producer" },

{ "name": "June Park", "role": "Strategist" }

],

"meta": { "total": 4 }

}

Project API · publishable key 200 OK · 41msSending…
c1

Create a token

cutout

once one pass, holds

Cutout on a navy ground: the project's Headless tab in the console, the Project API base URL under the title and the tokens its front ends run on, cropped through the Blutui mark on the left and running off the bottom. The cursor arrives on Create token, the button takes its hover shade, a press, and a Storefront token lands at the top of the list with a green flash, its value written out in full the one time the console shows it while the count ticks 2 to 3. At card width the base URL chip and the last-used column are dropped, as the real view does on narrow screens.

views/components/visuals/headless/c1.html

Static · three placements

Bento card · 320px Static
KE Kererū
RC
Overview Cassettes Headless Settings

Access tokens

(2)(3)

Create token
Storefront

bt_publishable_7Qa9NfLc2VtR8xJm

Copy
iOS app

bt_publishable_••••••••4c1e

Front desk display

bt_publishable_••••••••9f30

Project API

Every collection, form, menu and page in this project, as JSON.

curl https://kereru.blutui.com/api/collections
Feature row · 560px Static
KE Kererū
RC
Overview Cassettes Headless Settings

Access tokens

(2)(3)

Create token
Storefront

bt_publishable_7Qa9NfLc2VtR8xJm

Copy
iOS app

bt_publishable_••••••••4c1e

Front desk display

bt_publishable_••••••••9f30

Project API

Every collection, form, menu and page in this project, as JSON.

curl https://kereru.blutui.com/api/collections
Hero figure · 880px Static
KE Kererū
RC
Overview Cassettes Headless Settings

Access tokens

(2)(3)

Create token
Storefront

bt_publishable_7Qa9NfLc2VtR8xJm

Copy
iOS app

bt_publishable_••••••••4c1e

Front desk display

bt_publishable_••••••••9f30

Project API

Every collection, form, menu and page in this project, as JSON.

curl https://kereru.blutui.com/api/collections

Animated · once

Feature row · 560px
KE Kererū
RC
Overview Cassettes Headless Settings

Access tokens

(2)(3)

Create token
Storefront

bt_publishable_7Qa9NfLc2VtR8xJm

Copy
iOS app

bt_publishable_••••••••4c1e

Front desk display

bt_publishable_••••••••9f30

Project API

Every collection, form, menu and page in this project, as JSON.

curl https://kereru.blutui.com/api/collections
Tune · ground and placement
Ground
Place

Overrides none — the file's own defaults